package main

func frequencySort(s string) string {
    // 将s转为[]rune，用map[rune]int统计词频，用[]rune统计出现的单词
    // 统计

    r := []rune(s)
    m := make(map[rune]int)
    chars := make([]rune, 0)
    ans := make([]rune, 0)

    for _, char := range r {
        _, ok := m[char]
        if ok {
            m[char] ++
        } else {
            m[char] = 1
            chars = append(chars, char)
        }
    }

    // 排序
    sort.Slice(chars, func(i, j int) bool {
        return m[chars[i]] > m[chars[j]]
    })

    // 整理输出
    for _, char := range chars {
        for i := 0; i < m[char]; i ++ {
            ans = append(ans, char)
        }
    }

    return string(ans)
}
